The present invention relates generally to data storage, and more specifically to techniques for allowing multiple hosts with separate host adapters to access a Serial ATA storage device.
Hard disk drives are widely used to provide mass storage for various computing applications. Various disk drive designs are commercially available, each of which may be tailored for a specific application and designed to meet certain requirements. For example, low-cost disk drives are available for personal computers (PCs), high-capacity disk drives are available for network servers and mainframes, Redundant Array of Independent Disks (RAID) are available for high-reliability storage, and so on.
A new data link interface for storage devices was recently promulgated by a consortium of computer and disk drive vendors, including APT Technologies, Inc., Dell Computer Corporation, IBM Corporation, Intel Corporation, Maxtor Corporation, and Seagate Technology. This new interface is referred to as Serial Advanced Technology Attachment (Serial ATA or SATA), and is designed to provide certain advantages, including high transfer rate, ease of connectivity, simplicity of use, and so on.
The specification for SATA is defined in a document entitled “Serial ATA High Speed Serialized AT Attachment,” which is referred to herein as the SATA specification and incorporated herein by reference. Revision 1.0 of the SATA specification was released by the consortium on Aug. 29, 2001 and is publicly available. The SATA specification defines the interface between a host adapter and a mass-storage device including a physical layer, a link layer, and a transport layer. An example of a host adapter is an integrated circuit that includes a Serial ATA controller with a PCI interface. An example of a mass-storage device is a Serial ATA hard-disk drive. The Serial ATA is intended as a high-speed replacement for parallel ATA. Three different generations are defined by the SATA specification: Generation 1 operating at a data rate of 1.5 Gigabits per second (Gbps), Generation 2 operating at 3.0 Gbps, and Generation 3 operating at 6.0 Gbps.
The SATA specification defines a point-to-point connection between a host adapter and a mass-storage device. This connection is not intended to be shared. Considering only the signal connections, and not the power connections or legacy connections, the SATA specification defines seven signals that couple the host adapter to the mass-storage device. The seven SATA signals are three ground signals, a differential transmit pair for data transfer from the host adapter to the device, and a differential receive pair for data transfer from the device to the host adapter. The two differential pairs carry the point-to-point serial data streams. The SATA specification also illustrates the physical connection for these seven signals as either a cabled connection or a direct connection. In a cabled configuration, a cable is used to connect a signal plug connector on the device to a signal plug connector associated with the host adapter. In a direct connection, the signal plug connector on the device is directly connected to a receptacle connector associated with the host adapter.
The SATA specification does not discuss nor provide a specific scheme to enable two hosts to access the same SATA storage device. In a high-availability storage system, it is desirable for the same device to be accessible by two or more different hosts. If one host fails, then another host can still access the device. In this way, the system is still operational because of the redundancy.
If multiple hosts can share a single host adapter, then these hosts can access the same SATA device by obtaining exclusive access to the shared host adapter. Typically, the exclusive access to the host adapter needs to be maintained during the entire read or write process, including command setup, command execution, and command completion.
In certain situations, it is desirable to have two or more hosts with separate host adapters gain access to the same SATA device. Support for this configuration is made challenging by the fact that the SATA signals between the host adapter and the SATA device are typically permanent connections that are not easily switched or reconnected. This arises from one of the stated goals in the SATA specification: single-host operation.
As can be seen, there is a need for techniques to allow multiple hosts with separate host adapters to access a Serial ATA storage device.